<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
  <PythonExport
      Father="PyObjectBase"
      Name="ShapeFix_EdgePy"
      PythonName="Part.ShapeFix.Edge"
      Twin="ShapeFix_Edge"
      TwinPointer="ShapeFix_Edge"
      Include="ShapeFix_Edge.hxx"
      Namespace="Part"
      FatherInclude="Base/PyObjectBase.h"
      FatherNamespace="Base"
      Constructor="true"
      Delete="false">
    <Documentation>
      <Author Licence="LGPL" Name="Werner Mayer" EMail="wmayer@users.sourceforge.net" />
      <UserDocu>Fixing invalid edge</UserDocu>
    </Documentation>
    <Methode Name="fixRemovePCurve">
      <Documentation>
        <UserDocu> Removes the pcurve(s) of the edge if it does not match the
   vertices
   Check is done
   Use    : It is to be called when pcurve of an edge can be wrong
   (e.g., after import from IGES)
   Returns: True, if does not match, removed (status DONE)
   False, (status OK) if matches or (status FAIL) if no pcurve,
   nothing done.</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="fixRemoveCurve3d">
      <Documentation>
        <UserDocu>Removes 3d curve of the edge if it does not match the vertices
   Returns: True,  if does not match, removed (status DONE)
   False, (status OK) if matches or (status FAIL) if no 3d curve,
   nothing done.</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="fixAddPCurve">
      <Documentation>
        <UserDocu>Adds pcurve(s) of the edge if missing (by projecting 3d curve)
   Parameter isSeam indicates if the edge is a seam.
   The parameter 'prec' defines the precision for calculations.
   If it is 0 (default), the tolerance of the edge is taken.
   Remark : This method is rather for internal use since it accepts parameter
   'surfana' for optimization of computations
   Use    : It is to be called after FixRemovePCurve (if removed) or in any
   case when edge can have no pcurve
   Returns: True if pcurve was added, else False
   Status :
   OK   : Pcurve exists
   FAIL1: No 3d curve
   FAIL2: fail during projecting
   DONE1: Pcurve was added
   DONE2: specific case of pcurve going through degenerated point on
   sphere encountered during projection (see class
   ShapeConstruct_ProjectCurveOnSurface for more info).</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="fixAddCurve3d">
      <Documentation>
        <UserDocu>Tries to build 3d curve of the edge if missing
   Use    : It is to be called after FixRemoveCurve3d (if removed) or in any
   case when edge can have no 3d curve
   Returns: True if 3d curve was added, else False
   Status :
   OK   : 3d curve exists
   FAIL1: BRepLib::BuildCurve3d() has failed
   DONE1: 3d curve was added.</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="fixVertexTolerance">
      <Documentation>
        <UserDocu>Increases the tolerances of the edge vertices to comprise
   the ends of 3d curve and pcurve on the given face
   (first method) or all pcurves stored in an edge (second one)
   Returns: True, if tolerances have been increased, otherwise False
   Status:
   OK   : the original tolerances have not been changed
   DONE1: the tolerance of first vertex has been increased
   DONE2: the tolerance of last  vertex has been increased.</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="fixReversed2d">
      <Documentation>
        <UserDocu>Fixes edge if pcurve is directed opposite to 3d curve
   Check is done by call to the function
   ShapeAnalysis_Edge::CheckCurve3dWithPCurve()
   Warning: For seam edge this method will check and fix the pcurve in only
   one direction. Hence, it should be called twice for seam edge:
   once with edge orientation FORWARD and once with REVERSED.
   Returns: False if nothing done, True if reversed (status DONE)
   Status:  OK    - pcurve OK, nothing done
   FAIL1 - no pcurve
   FAIL2 - no 3d curve
   DONE1 - pcurve was reversed.</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="fixSameParameter">
      <Documentation>
        <UserDocu>Tries to make edge SameParameter and sets corresponding
   tolerance and SameParameter flag.
   First, it makes edge same range if SameRange flag is not set.
   If flag SameParameter is set, this method calls the
   function ShapeAnalysis_Edge::CheckSameParameter() that
   calculates the maximal deviation of pcurves of the edge from
   its 3d curve. If deviation &gt; tolerance, the tolerance of edge
   is increased to a value of deviation. If deviation &lt; tolerance
   nothing happens.

   If flag SameParameter is not set, this method chooses the best
   variant (one that has minimal tolerance), either
   a. only after computing deviation (as above) or
   b. after calling standard procedure BRepLib::SameParameter
   and computing deviation (as above). If 'tolerance' &gt; 0, it is
   used as parameter for BRepLib::SameParameter, otherwise,
   tolerance of the edge is used.

   Use    : Is to be called after all pcurves and 3d curve of the edge are
   correctly computed
   Remark : SameParameter flag is always set to True after this method
   Returns: True, if something done, else False
   Status : OK    - edge was initially SameParameter, nothing is done
   FAIL1 - computation of deviation of pcurves from 3d curve has failed
   FAIL2 - BRepLib::SameParameter() has failed
   DONE1 - tolerance of the edge was increased
   DONE2 - flag SameParameter was set to True (only if
   BRepLib::SameParameter() did not set it)
   DONE3 - edge was modified by BRepLib::SameParameter() to SameParameter
   DONE4 - not used anymore
   DONE5 - if the edge resulting from BRepLib has been chosen, i.e. variant b. above
   (only for edges with not set SameParameter).</UserDocu>
      </Documentation>
    </Methode>
    <ClassDeclarations>
private:
    Handle(ShapeFix_Edge) hEdge;

public:
    void setHandle(Handle(ShapeFix_Edge) handle) {
        setTwinPointer(handle.get());
        hEdge = handle;
    }
    </ClassDeclarations>
  </PythonExport>
</GenerateModel>
